# Python 自定义模块及导入方法
'''
自定义模块
__name__== "__main__" 作用
模块帮助文档
'''


# 自定义模块
'''
一个较大的程序一般应分为若干个程序块，若干程序块称为模块，每个模块用来实现一部分特定的功能。
这样的目的是为了将代码有组织的存放在一起，方便管理和重复使用。

定义一个模块：
# vi mymodedule.py    # 新建一个py的后缀的文件
name = "fengyuanfei"
def count(a,b):
    result = a * b
    result f"{a}与{b}的乘积是: {result} "
    
使用模块的方法：
import <模块名称>
from <模块名称> import <方法名>

注: 模块名成即py文件名称
'''

# mymodedule.py的内容
'''
name = "fengyuanfei"

def conut(a,b):
    return a * b
print(conut(6,6))

class Calc():
    def __init__(self,a, b):
        self.a = a
        self.b = b
    def conut(self):
        return self.a * self.b
'''

# 引用 mymodedule.py文件
import mymodedule
#from mymodedule import conut

print(mymodedule.name)
print(mymodedule.conut(6,6))
calc = mymodedule.conut(6,6)
print(calc)



# __name__== "__main__" 作用
'''
mymodele.py作为一个模块，我们希望保留末尾测试代码，即上面调用函数和类，但也不希望再导入模块的时候执行。该怎么办呢？
可以利用Python文件的一个内置属性__name__实现，如果直接允许Python文件，__name__的值是"__mian__",如果import一个模块，
那么模块的__name__的值是"文件名"。

# vi mymodele.py
name = "fengyuanfei"
def count(a,b):
    result = a * b
    result f"{a}与{b}的乘积是: {result} "

if __name__ == "__main__":
    print("我在手动执行这个程序")
    print(count(6,6))
    print(name)
'''


# 模块帮助文档
'''
我们知道，在定义函数或者类时，可以为其添加说明文档，以方便用户清楚的知道函数或者类的功能。自定义模块也不例外，
也可以添加说明文档，与函数或类的添加方法相同，即只需在模块开头的位置定义一个字符串即可。

# vi mymodedule.py
#count()函数用于计算两个数值乘积
def count(a,b):
    result = a * b
    return f"{a}与{b}的乘积是: {result}"

#查看模块帮助文档：
#方法1：
print(mymodedule.__doc__)
#方法2:
help(mymodedule)
'''

# 引用 mymodedule.py文件
import mymodedule
#from mymodedule import conut

#print(mymodedule.name)
#print(mymodedule.conut(6,6))
#calc = mymodedule.conut(6,6)
#print(calc)

print(mymodedule.__doc__)    #查看帮助
help(mymodedule)             #查看帮助